Pagini recente »
Istoria paginii runda/concurs_oni_2022_cls6
|
Profil chestie_trestie
|
Monitorul de evaluare
|
Istoria paginii utilizator/ellyoana
|
Cod sursă (job #74034)
Cod sursă (job
#74034)
#include <stdio.h>
#define MAXN 1000
int v1[MAXN + 1], v2[MAXN + 1];
int max2(int a, int b){
return a > b ? a : b;
}
int main(){
FILE *in = fopen("clepsidru.in", "r");
int n, b, k;
fscanf(in, "%d%d%d", &n, &b, &k);
int i, sum = 0, t, last;
for(i = 0; i < k; i++){
fscanf(in, "%d%d", &t, &last);
if(last == 1) sum += t;
else sum -= t;
}
fclose(in);
FILE *out = fopen("clepsidru.out", "w");
fprintf(out, "%d\n", n + b - 1);
if(sum > 0){
int cb = b;
for(i = max2(sum - b + 1, 0); b > 0 && i <= n; i++){
v2[i] = 1;
if(i != 0) b--;
}
if(max2(sum - cb + 1, 0) > n) v2[n] = cb;
else{
if(sum - cb + 1 < 0) v2[0] += b;
else v2[n] += b;
}
v1[n] = v2[n];
if(last == 2){
for(i = 1; i < n; i++){
v1[i] = v2[i];
v2[i] = 0;
}
}
}
else v2[0] = b;
for(i = 0; i < n; i++){
fprintf(out, "%d %d\n", v2[i], v1[i + 1]);
}
fclose(out);
return 0;
}