# | 제출 시각 | 아이디 | 문제 | 언어 | 결과 | 실행 시간 | 메모리 |
---|---|---|---|---|---|---|---|
155627 | 2019-09-29T10:50:44 Z | georgerapeanu | JOIRIS (JOI16_joiris) | C++11 | 3 ms | 404 KB |
#include <cstdio> #include <vector> #include <algorithm> using namespace std; int n,k; int a[55]; int tmp[55]; int cnt[55]; int ord[55]; vector<pair<int,int> > op; int dist(int a,int b){ if(a > b){ b += k; } return b - a; } void get_same_height_range(){ int ma = 0; for(int i = 1;i <= n;i++){ ma = max(ma,a[i]); } for(int i = 1;i <= n;i++){ while(ma - a[i] >= k){ a[i] += k; op.push_back({1,i}); } } } void paralel(vector<pair<int,int> > &v){ for(auto it:v){ for(int x = 1;x <= it.second;x++){ op.push_back({2,it.first}); } for(int j = it.first;j < it.first + k;j++){ a[j] += it.second; } } sort(ord + 1,ord + 1 + n,[&](int x,int y){return a[x] < a[y];}); for(int i = 1;i <= n;i++){ a[i] += k; op.push_back({1,ord[i]}); } } void do_tetris(){ int mi = a[1]; for(int i = 1;i <= n;i++){ mi = min(mi,a[i]); } for(int i = 1;i <= n;i++){ a[i] -= mi; } } int main(){ scanf("%d %d",&n,&k); int suma = 0; for(int i = 1;i <= n;i++){ scanf("%d",&a[i]); suma += a[i]; tmp[i] = a[i] % k; } int h = -1; for(int x = 0;x < k;x++){ if((x * n % k) == (suma % k)){ h = x; } } if(h == -1){ printf("-1\n"); return 0; } for(int i = 1;i <= n - k + 1;i++){ cnt[i] = dist(tmp[i],h); for(int j = i;j < i + k;j++){ tmp[j] += cnt[i]; tmp[j] %= k; } } for(int i = 1;i <= n;i++){ ord[i] = i; if(tmp[i] != h){ printf("-1\n"); return 0; } } for(int i = 1;i <= n;i++){ get_same_height_range(); vector<pair<int,int> > pos; for(int j = i;j <= i;j += k){ pos.push_back({j,cnt[j]}); } paralel(pos); do_tetris(); } get_same_height_range(); printf("%d\n",(int)op.size()); for(auto it:op){ printf("%d %d\n",it.first,it.second); } return 0; }
Compilation message
# | 결과 | 실행 시간 | 메모리 | Grader output |
---|---|---|---|---|
1 | Correct | 2 ms | 376 KB | Output is correct |
2 | Correct | 2 ms | 256 KB | Output is correct |
3 | Correct | 2 ms | 252 KB | Output is correct |
4 | Correct | 2 ms | 376 KB | Output is correct |
5 | Correct | 2 ms | 128 KB | Output is correct |
6 | Correct | 2 ms | 256 KB | Output is correct |
7 | Correct | 3 ms | 404 KB | Output is correct |
8 | Correct | 3 ms | 376 KB | Output is correct |
9 | Correct | 2 ms | 256 KB | Output is correct |
10 | Correct | 2 ms | 376 KB | Output is correct |
11 | Incorrect | 2 ms | 380 KB | Output isn't correct |
12 | Halted | 0 ms | 0 KB | - |
# | 결과 | 실행 시간 | 메모리 | Grader output |
---|---|---|---|---|
1 | Incorrect | 2 ms | 376 KB | Output isn't correct |
2 | Halted | 0 ms | 0 KB | - |
# | 결과 | 실행 시간 | 메모리 | Grader output |
---|---|---|---|---|
1 | Correct | 2 ms | 376 KB | Output is correct |
2 | Correct | 2 ms | 256 KB | Output is correct |
3 | Correct | 2 ms | 252 KB | Output is correct |
4 | Correct | 2 ms | 376 KB | Output is correct |
5 | Correct | 2 ms | 128 KB | Output is correct |
6 | Correct | 2 ms | 256 KB | Output is correct |
7 | Correct | 3 ms | 404 KB | Output is correct |
8 | Correct | 3 ms | 376 KB | Output is correct |
9 | Correct | 2 ms | 256 KB | Output is correct |
10 | Correct | 2 ms | 376 KB | Output is correct |
11 | Incorrect | 2 ms | 380 KB | Output isn't correct |
12 | Halted | 0 ms | 0 KB | - |
# | 결과 | 실행 시간 | 메모리 | Grader output |
---|---|---|---|---|
1 | Correct | 2 ms | 376 KB | Output is correct |
2 | Correct | 2 ms | 256 KB | Output is correct |
3 | Correct | 2 ms | 252 KB | Output is correct |
4 | Correct | 2 ms | 376 KB | Output is correct |
5 | Correct | 2 ms | 128 KB | Output is correct |
6 | Correct | 2 ms | 256 KB | Output is correct |
7 | Correct | 3 ms | 404 KB | Output is correct |
8 | Correct | 3 ms | 376 KB | Output is correct |
9 | Correct | 2 ms | 256 KB | Output is correct |
10 | Correct | 2 ms | 376 KB | Output is correct |
11 | Incorrect | 2 ms | 380 KB | Output isn't correct |
12 | Halted | 0 ms | 0 KB | - |