Submission #1256318

#TimeUsernameProblemLanguageResultExecution timeMemory
1256318trandangquangJOIRIS (JOI16_joiris)C++20
100 / 100
1 ms328 KiB
#include<bits/stdc++.h> using namespace std; #define foru(i,a,b) for(int i=(a); i<=(b); ++i) #define ford(i,a,b) for(int i=(a); i>=(b); --i) #define ii pair<int,int> int n,k,a[55],p[55]; int md=-1; vector<ii> ans; bool can(int x){ foru(i,1,n) p[i]=0; foru(i,1,n-k+1){ p[i]+=p[i-1]; int d=((x-(a[i]+p[i]))%k+k)%k; p[i]+=d; p[i+k]-=d; } foru(i,n-k+2,n) p[i]+=p[i-1]; foru(i,1,n){ if((a[i]+p[i])%k!=x){ return false; } } return true; } void chk(){ foru(i,0,k-1){ if(can(i)){ md=i; return; } } } void put(int dir, int x){ /// dir=1: vertical, dir=2: horizontal ans.emplace_back(dir,x); } void solve(){ cin>>n>>k; foru(i,1,n) cin>>a[i]; chk(); if(md==-1){ cout<<"-1\n"; return; } foru(i,1,n) p[i]=0; foru(i,1,n-k+1){ int d=((md-a[i])%k+k)%k; foru(j,1,d) put(2,i); int mx=0; foru(j,i,i+k-1) a[j]+=d, mx=max(mx,a[j]); foru(j,1,n) if(j<=i-1 || j>=i+k){ while(a[j]<mx){ a[j]+=k; put(1,j); } } } int mx=*max_element(a+1,a+1+n); foru(i,1,n){ while(a[i]<mx){ a[i]+=k; put(1,i); } } cout<<ans.size()<<'\n'; for(auto [x,y]:ans) cout<<x<<" "<<y<<'\n'; } int main(){ #define task "test" if(fopen(task".inp","r")){ freopen(task".inp","r",stdin); freopen(task".out","w",stdout); } cin.tie(0)->sync_with_stdio(0); int tc=1; //cin>>tc; foru(_,1,tc){ solve(); } }

Compilation message (stderr)

joiris.cpp: In function 'int main()':
joiris.cpp:81:16: warning: ignoring return value of 'FILE* freopen(const char*, const char*, FILE*)' declared with attribute 'warn_unused_result' [-Wunused-result]
   81 |         freopen(task".inp","r",stdin);
      |         ~~~~~~~^~~~~~~~~~~~~~~~~~~~~~
joiris.cpp:82:16: warning: ignoring return value of 'FILE* freopen(const char*, const char*, FILE*)' declared with attribute 'warn_unused_result' [-Wunused-result]
   82 |         freopen(task".out","w",stdout);
      |         ~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...