Submission #1112114

#TimeUsernameProblemLanguageResultExecution timeMemory
1112114lamHarvest (JOI20_harvest)C++14
5 / 100
1458 ms337232 KiB
#include<bits/stdc++.h> #define ll long long #define ntr "\n" #define mod (ll)(1e9+7) #define taskname "" #define frep freopen(taskname".inp","r",stdin); freopen(taskname".out","w",stdout); using namespace std; ll a[5001],b[5001]; ll n,m,l,c,q; vector<pair<ll,ll>> adj[7001]; ll loop1[7001][3001]; ll loop2[7001][3001]; ll vis[7001]; ll par; void dfs(ll u,ll dist){ if(vis[u]>=2) return ; vis[u]++; if(vis[u]==1) loop1[u][par]=dist; else loop2[u][par]=dist; for(auto [v,w]:adj[u]){ dfs(v,dist+w); } } int main(){ ios_base::sync_with_stdio(false); cin.tie(0); cout.tie(0); //frep; cin>>n>>m>>l>>c; for(int i=1;i<=n;i++) cin>>a[i]; for(int i=1;i<=m;i++) cin>>b[i]; for(int i=1;i<=n;i++){ ll t=((a[i]-c)%l+l)%l; ll pos=upper_bound(a+1,a+n+1,t)-a-1; if(pos==0) pos=n; //if(i==j) continue; ll v=((a[i]-a[pos])%l+l)%l; ll cost=(c-v+l-1)/l*l+v; // cout<<i<<' '<<pos<<' '<<mn<<ntr; adj[i].push_back({pos,cost}); } for(int i=1;i<=m;i++){ ll v=upper_bound(a+1,a+n+1,b[i])-a-1; if(v==0) v=n; ll cost=((b[i]-a[v])%l+l)%l; adj[i+n].push_back({v,cost}); // cout<<i<<' '<<v<<' '<<cost<<ntr; } memset(loop1,0x3f,sizeof(loop1)); memset(loop2,0x3f,sizeof(loop2)); for(int i=1;i<=m;i++){ par=i; dfs(i+n,0); for(int j=1;j<=n+m;j++) vis[j]=0; } // for(int i=1;i<=n;i++){ // for(int j=1;j<=m;j++){ // cout<<loop1[i][j]<<' '; // } // cout<<ntr; // } cin>>q; for(int i=1;i<=q;i++){ ll u,t; cin>>u>>t; ll ans=0; for(int j=1;j<=m;j++){ if(loop1[u][j]>t) continue; ans++; ll diff=loop2[u][j]-loop1[u][j]; //cout<<diff<<' '; ans+=(t-loop1[u][j])/diff; } cout<<ans<<ntr; } }

Compilation message (stderr)

harvest.cpp: In function 'void dfs(long long int, long long int)':
harvest.cpp:20:14: warning: structured bindings only available with '-std=c++17' or '-std=gnu++17'
   20 |     for(auto [v,w]:adj[u]){
      |              ^
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...